From: Alexander Larsson Date: Fri, 4 Mar 2011 14:49:13 +0000 (+0100) Subject: Always reserve space in all workspaces on a drag X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~8619 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=05736ba0a1facaea873822fbc73221f2eed37414;p=gnome-shell.git Always reserve space in all workspaces on a drag We used to do this only on automatic workspace switch, but that doesn't work for the multiple monitors case where we want to reserve space on the extra monitors. https://bugzilla.gnome.org/show_bug.cgi?id=609258 --- diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js index e9b548a44..d288c2c14 100644 --- a/js/ui/workspacesView.js +++ b/js/ui/workspacesView.js @@ -385,6 +385,7 @@ WorkspacesView.prototype = { return; this._inDrag = true; + this._firstDragMotion = true; this._dragMonitor = { dragMotion: Lang.bind(this, this._onDragMotion) @@ -396,6 +397,14 @@ WorkspacesView.prototype = { if (Main.overview.animationInProgress) return DND.DragMotionResult.CONTINUE; + if (this._firstDragMotion) { + this._firstDragMotion = false; + for (let i = 0; i < this._workspaces.length; i++) + this._workspaces[i].setReservedSlot(dragEvent.dragActor._delegate); + for (let i = 0; i < this._extraWorkspaces.length; i++) + this._extraWorkspaces[i].setReservedSlot(dragEvent.dragActor._delegate); + } + let primary = global.get_primary_monitor(); let activeWorkspaceIndex = global.screen.get_active_workspace_index(); @@ -409,7 +418,6 @@ WorkspacesView.prototype = { let switchTop = (dragEvent.y <= topEdge && topWorkspace); if (switchTop && this._dragOverLastY != topEdge) { topWorkspace.metaWorkspace.activate(global.get_current_time()); - topWorkspace.setReservedSlot(dragEvent.dragActor._delegate); this._dragOverLastY = topEdge; return DND.DragMotionResult.CONTINUE; @@ -418,7 +426,6 @@ WorkspacesView.prototype = { let switchBottom = (dragEvent.y >= bottomEdge && bottomWorkspace); if (switchBottom && this._dragOverLastY != bottomEdge) { bottomWorkspace.metaWorkspace.activate(global.get_current_time()); - bottomWorkspace.setReservedSlot(dragEvent.dragActor._delegate); this._dragOverLastY = bottomEdge; return DND.DragMotionResult.CONTINUE; @@ -453,7 +460,6 @@ WorkspacesView.prototype = { this._timeoutId = Mainloop.timeout_add_seconds(1, Lang.bind(this, function() { hoverWorkspace.metaWorkspace.activate(global.get_current_time()); - hoverWorkspace.setReservedSlot(dragEvent.dragActor._delegate); return false; })); } else { @@ -476,6 +482,8 @@ WorkspacesView.prototype = { for (let i = 0; i < this._workspaces.length; i++) this._workspaces[i].setReservedSlot(null); + for (let i = 0; i < this._extraWorkspaces.length; i++) + this._extraWorkspaces[i].setReservedSlot(null); }, _swipeScrollBegin: function() {